package com.example;

import org.junit.Test;

public class Demo03 {

    @Test
    public void test01() {
        int fenshu = 80;
        /* 一旦满足分支条件，后续的分支条件将不再执行 */
        if (fenshu >= 90) {
            System.out.println("优秀");
        } else if (fenshu >= 80) {
            // 执行
            System.out.println("良好");
        } else if (++ fenshu >= 60) {
            // 不执行
            System.out.println("及格");
        } else {
            // 不执行
            System.out.println("不及格");
        }
        System.out.println(fenshu);
    }

    @Test
    public void test02() {
        int a = 2;
        /* break:终止选择结构 */
        switch (a) {
            case 1:
                System.out.println("a=1");
                break;
            case 2:
                System.out.println("a=2");
                break;
            default:
                System.out.println("a不符合上述的case");
                break;
        }
    }

    @Test
    public void test03() {
        int i = 0; // (1)
        while (i < 2) { // (2)(5)
            System.out.println("正在循环第：" + i + "次"); // (3)(6)
            i ++; // (4)(7)
        }
        System.out.println("最后i变成了:" + i); // 2
    }

    /* 1 + ... + 1000的总和 */
    @Test
    public void test04() {
        int i = 1;
        int sum = 0;
        while (i <= 1000) {
            sum += i;
            i ++;
        }
        System.out.println(sum);
    }

    @Test
    public void test05() {
        int i = 0;
        /* 至少执行一次，即使初始条件不满足 */
        do {
            System.out.println("正在执行第:" + i + "次循环");
            i ++;
        } while (i < 0);
        System.out.println("最后i变成了" + i); // 1
    }

    /* 1 ~ 1000的奇数和 */
    @Test
    public void test06() {
        int sum = 0;
        for (int i = 1; i <= 1000; i++) {
            if (i % 2 == 1) {
                sum += i;
            }
        }
    }

    /**
     * *   i:0,j:0
     * **  i:1,j:0,1
     * *** i:2,j:0,1,2
     * 条件:j <= 2时，打印*
     */
    @Test
    public void test07() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print('*');
                /*if (j <= i) {
                    System.out.print('*');
                }*/
            }
            System.out.print('\n'); // 转义字符，换行
        }
    }

    /**
     * *** i:0,j:0,1,2
     * **  i:1,j:0,1
     * *   i:2,j:0
     */
    @Test
    public void test08() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3 - i; j++) {
                System.out.print('*');
                /*if (j + i < 3) {
                    System.out.print('*');
                }*/
            }
            System.out.print('\n');
        }
    }

    /**
     * *** i:0,空格j:没有;  *j:0,1,2
     *  ** i:1,空格j:0;    *j:1,2
     *   * i:2,空格j:0,1;  *j:2
     *   空格j最大值是i-1
     */
    @Test
    public void test09() {
//        for (int i = 0; i < 3; i++) {
//            for (int j = 0; j <= i ; j++) {
//                System.out.print(' ');
//            }
//            for (int j = 0; j < 3 - i; j++) {
//                System.out.print('*');
//            }
//            System.out.print('\n');
//        }
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (j <= i - 1) {
                    System.out.print(' ');
                } else {
                    System.out.print('*');
                }
            }
            System.out.print('\n');
        }
    }

    /**
     *   * i:0, j:0,1
     *  ** i:1, j:0
     * *** i:2, j:没有
     */
    @Test
    public void test10() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (j + i <= 1) {
                    System.out.print(' ');
                }else {
                    System.out.print('*');
                }
            }
            System.out.print('\n');
        }
    }

    /**
     * break:提前退出循环
     * continue:结束单次循环，直接进入下一次循环
     * 多层循环，需要为循环打上标识，在使用break和continue关键字时加上循环名称标识
     */
    @Test
    public void test11() {
        A:for (int i = 0; i < 10; i++) {
            B:for (int j = 0; j < 10; j++) {
                if (i > 8 && j > 8) {
                    break B;
                }
            }
        }
    }
}
